<?php

/**
 * MyActiveForm
 *
 * @author luubk
 * @since Jan 11, 2013 - 11:52:19 PM
 */
class MyActiveForm extends CWidget
{

    public $title; // Tiêu đề 
    public $columns = array(); // Các cột sẽ hiển thị
    public $model; // Model của đối tượng xử lý
    public $controller; // Đối tượng Controller đang sử dụng widget này
    public $autoAttrLimit = 8; // Số cột sẽ trình bày tự động trong trường hợp không chỉ định cột cụ thể
    public $htmlOptions = array(); // Các thuộc tính cho thẻ chứa

    public function init()
    {
        parent::init();

        /**
         * Trường hợp không truyền vào các thuộc tính hiển thị
         * Thì lấy $autoAttrLimit thuộc tính đầu tiên để hiển thị
         */
        if (empty($this->columns) && $this->model)
        {
            $autoAttr = array_slice($this->model->getAttributes(), 0, $this->autoAttrLimit);
            $this->columns = array_keys($autoAttr);
        }

        /**
         * Tạo đối tượng Controller hiện tại để xử lý tạo liên kết cho chính xác
         */
        $this->controller = Yii::app()->getController();


        // Bắt đầu hiển thị form
        $form = $this->beginWidget('CActiveForm', array(
            'htmlOptions' => array(
                'method' => 'POST',
                'enctype' => 'multipart/form-data',
            ),
            'enableClientValidation' => true,
//            'clientOptions' => array('validateOnSubmit' => true,),
        ));

        $this->render('myActiveForm', array('form' => $form));
    }

    public function run()
    {
        // Hiển thị các nút Save, Reset, Delete
        $this->showButton();

        // Kết thúc form
        $this->endWidget();
    }

    public function showButton()
    {
        echo '<div class="clear"></div>';
        echo '<div class="row-fluid">';
        echo '<div class="buttons-bar">';
        echo '<div class="pull-right">';
        echo $this->showSaveButton();
        echo $this->showSaveContinueButton();
        echo $this->showResetButton();
        echo $this->showDeleteButton();
        echo '</div>';
        echo '</div>';
        echo '</div>';
    }

    public function showSaveButton()
    {
        $text = "<i class='icon-save'></i>";
        $type = "name='submit' value='return'";

        $text .= Yii::t('form', 'Save');
        return "<button type='submit' class='btn btn-primary' $type>$text</button> ";
    }

    public function showSaveContinueButton()
    {
        $type = "name='submit' value='continue'";
        $text = "<i class='icon-ok'></i>";

        if ($this->model->isNewRecord)
            $text .= Yii::t('form', 'Save & next insert');
        else
            $text .= Yii::t('form', 'Save & continue edit');

        return "<button type='submit' class='btn btn-primary' $type>$text</button> ";
    }

    public function showResetButton()
    {
        $text = '<i class="icon-refresh"></i>';
        $text .= Yii::t('form', 'Reset');
        return ' <button type="reset" class="btn">' . $text . '</button>';
    }

    public function showDeleteButton()
    {
        if (!isset($_GET['pk']) OR !$_GET['pk'])
            return "";

        $route = Yii::app()->controller->id . "/delete";
        $url = Yii::app()->controller->createUrl($route, array(
            'lang' => Yii::app()->language,
            'pk' => $_GET['pk'],
        ));
        $text = '<i class="icon-remove"></i>' . Yii::t('form', 'Delete');
        $onclick = 'return confirm("' . Yii::t('datatable', 'Do you want to remove this element?') . '")';
        return CHtml::link($text, $url, array(
                    'class' => 'btn btn-inverse',
                    'onclick' => $onclick,
        ));
    }

}

/** 
 * End file MyActiveForm
 */
